	经典的"Hello world"的程序总是被用来开始介绍一种语言。在Lua中，写一个这样的程序很简单：

　　print("Hello world")

　　在Lua中，语句之间可以用分号"；"隔开，也可以用空白隔开。一般来说，如果多个语句写在同一行的话，建议总是用分号隔开。

　　Lua 有好几种程序控制语句，如：

 

　　条件控制：if 条件 then … elseif 条件 then … else … end

　　While循环：while 条件 do … end

　　Repeat循环：repeat … until 条件

　　For循环：for 变量 = 初值，终点值，步进 do … end

　　For循环：for 变量1，变量2，… ，变量N in表或枚举函数 do … end

 

　　注意一下，for的循环变量总是只作用于for的局部变量，你也可以省略步进值，这时候，for循环会使用1作为步进值。

　　你可以用break来中止一个循环。

　　如果你有程序设计的基础，比如你学过Basic，C之类的，你会觉得Lua也不难。但Lua有几个地方是明显不同于这些程序设计语言的，所以请特别注意。

 

　　．语句块

　　　　语句块在C++中是用"{"和"}"括起来的，在Lua中，它是用do 和 end 括起来的。比如：

　　　　do print("Hello") end

　　　　你可以在 函数 中和 语句块 中定局部变量。

 

　　．赋值语句

　　　　赋值语句在Lua被强化了。它可以同时给多个变量赋值。

　　　　例如：

　　　　a,b,c,d=1,2,3,4

　　　　甚至是：

　　　　a,b=b,a -- 多么方便的交换变量功能啊。

　　　　在默认情况下，变量总是认为是全局的。假如你要定义局部变量，则在第一次赋值的时候，需要用local说明。比如：

　　　　local a,b,c = 1,2,3 -- a,b,c都是局部变量

 

　　．数值运算

　　　　和C语言一样，支持 +, -, *, /。但Lua还多了一个"^"。这表示指数乘方运算。比如2^3 结果为8, 2^4结果为16。

　　　　连接两个字符串，可以用".."运处符。如：

　　　　"This a " .. "string." -- 等于 "this a string"

 

　　．比较运算

　　　　< > <= >= == ~=

　　　　分别表示 小于，大于，不大于，不小于，相等，不相等

　　　　所有这些操作符总是返回true或false。

　　　　对于Table，Function和Userdata类型的数据，只有 == 和 ~=可以用。相等表示两个变量引用的是同一个数据。比如：

　　　　a={1,2}

　　　　b=a

　　　　print(a==b, a~=b) -- true, false

　　　　a={1,2}

　　　　b={1,2}

　　　　print(a==b, a~=b) -- false, true

 

　　．逻辑运算

　　　　and, or, not

　　　　其中，and 和 or 与C语言区别特别大。

　　　　在这里，请先记住，在Lua中，只有false和nil才计算为false，其它任何数据都计算为true，0也是true！

　　　　and 和 or的运算结果不是true和false，而是和它的两个操作数相关。

　　　　a and b：如果a为false，则返回a；否则返回b

　　　　a or b：如果 a 为true，则返回a；否则返回b

 

　　　　举几个例子：

　　　　 print(4 and 5) --> 5

　　　　 print(nil and 13) --> nil

　　　　 print(false and 13) --> false

　　　　 print(4 or 5) --> 4

　　　　 print(false or 5) --> 5

 

　　　　在Lua中这是很有用的特性，也是比较令人混洧的特性。

　　　　我们可以模拟C语言中的语句：x = a? b : c，在Lua中，可以写成：x = a and b or c。

　　　　最有用的语句是： x = x or v，它相当于：if not x then x = v end 。

 

　　．运算符优先级，从高到低顺序如下：

　　　　^

　　　　not - （一元运算）

　　　　 * /

　　　　 + -

　　　　 ..（字符串连接）

　　　　 < > <= >= ~= ==

　　　　 and

　　　　 or